/**
 * 
 */
package com.mbengue.corp.apr.ra.dao;

import java.util.Date;
import java.util.List;

import org.hibernate.HibernateException;

import com.mbengue.corp.apr.ra.core.Evenement;

/**
 * Gere l'ajout, la modification, la suppression et la recherche d'evenement
 * @author MMB11447
 *
 */
public interface EvenementDao {

	/**
	 * Ajoute l'evenemenent dans la base de donnees
	 * 
	 * @param evenement {@link Evenement} a ajouter
	 * @throws HibernateException
	 */
	public void ajouterEvenement(Evenement evenement) throws HibernateException;
	
	/**
	 * Trouve l'evenement dont l'identifiant est donne en entree
	 * 
	 * @param id {@link Long} identifiant de l'evenement
	 * @return {@link Evenement}
	 */
	public Evenement trouverEvenement(long id);
	
	/**
	 * Retrouve tous les evemenents dont le titre contient le mot donne en entree
	 * 
	 * @param titre {@link String} titre ou partie du titre de l'evenement
	 * @return {@link List} d'evenement
	 */
	public List<Evenement> trouverEvenementParTitre(String titre);
	
	/**
	 * Retrouve tous les evenements qui auront lieu entre les dates donnees en entree
	 * 
	 * @param debut {@link Date} debut de la fourchette
	 * @param fin {@link Date} fin de la fourchette
	 * @return {@link List} d'evenement
	 */
	public List<Evenement> trouverEvenementParDates(Date debut, Date fin);
}
